iT邦幫忙

0

Day 14 | Java 類別建構子(Constructor)與初始化

  • 分享至 

  • xImage
  •  

在上一篇討論了封包,這篇要學物件導向中的關鍵:建構子。


  • 什麼是建構子 (Constructor)?
  1. 是一種特殊的方法(Method),會在使用 new 建立物件的當下自動被執行。

  2. 主要用途:用來初始化物件的屬性資料。

  • 建構子的語法規則
  1. 名稱必須與類別(Class)名稱完全一模一樣。

  2. 沒有回傳值型態(連 void 都不能寫)。

  3. 可以有參數,也可以沒有參數。

  • 建構子範例說明
  1. 基本建構子與物件初始化
class Person {
    String name;
    
    // 建構子:名稱與類別完全相同,沒有回傳值型態
    Person(String inputName) {
        name = inputName; // 在建立物件時就把名字設定好
        System.out.println("建構子被執行了!姓名為:" + name);
    }
}
  1. 建立物件與呼叫建構子
public class Main {
    public static void main(String[] args) {
        // 使用 new 的同時傳入參數,自動觸發建構子
        Person p1 = new Person("小明"); // 印出:建構子被執行了!姓名為:小明
        Person p2 = new Person("小紅"); // 印出:建構子被執行了!姓名為:小紅
    }
}
  • 預設建構子 (Default Constructor)
  1. 如果你在類別中完全沒有寫任何建構子,Java 會自動幫你產生一個沒有參數的隱藏預設建構子:類別名() {}。

  2. 但如果你已經手動寫了有參數的建構子,Java 就不會再自動提供預設建構子囉!

  3. 範例:

//用建構子設計一個「玩家角色 (Player)」類別,在建立角色時直接設定血量 (HP) 與攻擊力 (ATK):
class Player {
    int hp;
    int atk;

    // 自訂建構子
    Player(int startHp, int startAtk) {
        hp = startHp;
        atk = startAtk;
    }

    void showStatus() {
        System.out.println("血量:" + hp + " | 攻擊力:" + atk);
    }
}

public class GameTest {
    public static void main(String[] args) {
        // 在建立玩家物件的當下直接給定初期數值
        Player p1 = new Player(100, 15);
        p1.showStatus(); // 印出:血量:100 | 攻擊力:15
    }
}
  • 參考教學影片:https://www.youtube.com/watch?v=-rjO4H4qdwY&list=PL-g0fdC5RMbrg6mbMPqo9MW39IPbY8tUH&index=2

*提醒邦友,使用第三方服務/API 時,請務必評估資安風險與隱私保護
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言